// pages/search/search.js
import request from '../../utils/request'

let isSend = false;     // 用于函数节流

Page({

    /**
     * 页面的初始数据
     */
    data: {
        placeholderContent: '',     // 默认搜索内容
        hotList: [],                // 热搜列表
        searchContent: '',          // 用户输入表单项数据
        searchList: [],             // 搜索返回数据
        historyList: [],            // 历史搜索记录
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        this.getInitData();
        this.getSearchHistory();
    },

    // 获取初始化数据
    async getInitData() {
        let placeholderData = await request('/search/default');
        let hotListData = await request('/search/hot/detail');
        this.setData({
            placeholderContent: placeholderData.data.showKeyword,
            hotList: hotListData.data,
        });
    },

    // 获取本地搜索历史纪录的功能函数
    getSearchHistory() {
        let historyList = wx.getStorageSync('searchHistory');
        if (historyList) {
            this.setData({
                historyList
            });
        }
    },

    // 表单项内容发生改变的回调
    handleInputChange(event) {
        // 更新表单项数据
        this.setData({
            searchContent: event.detail.value.trim(),
        });
        
        // 函数节流
        if (isSend) {
            return;
        }
        isSend = true;
        this.getSearchList();
        setTimeout(async () => {
            isSend = false;
        }, 300);
    },

    // 获取搜索数据的功能函数
    async getSearchList() {
        if (!this.data.searchContent) {
            this.setData({
                searchList: [],
            });
            return;
        }

        // 发起请求获取关键词模糊匹配数据
        let searchListData = await request('/search', {keywords: this.data.searchContent, limit: 10});
        this.setData({
            searchList: searchListData.result.songs,
        });

        // 将搜索的关键字添加到历史记录中
        let {searchContent, historyList} = this.data;
        if (historyList.indexOf(searchContent) !== -1) {
            historyList.splice(historyList.indexOf(searchContent), 1);
        }
        historyList.unshift(searchContent);
        this.setData({
            historyList,
        });
        wx.setStorageSync('searchHistory', historyList);
    },

    // 清空搜索内容
    clearSearchContent() {
        console.log('clear');
        this.setData({
            searchContent: '',
            searchList:[],
        });
    },

    // 删除搜索历史纪录
    deleteSearchHistory() {
        wx.showModal({
            content: '确认删除吗？',
            success: (res) => {
                // 清空历史记录及本地缓存
                if (res.confirm) {
                    this.setData({
                        historyList: [],
                    });
                    wx.removeStorageSync('searchHistory');
                }
            }
        })
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    }
})